package control;

import comunicacion.InterfazRecibe;
import mensaje.*;
import pantallas.PantallaFinPartida;

public class ManejadorMensajesEntrada {

/*********atributos************************************************/
    private ManejadorMensajesSalida mms;
    private ManejadorCrearPartida mcp;
    private ManejadorUnirsePartida mup;
    private ManejadorPantallaJuego mpj;
    private InterfazRecibe interfazRecibe;

    int usrID;
/******************************************************************/    

/********métodos****************************************************/
    public ManejadorMensajesEntrada (ManejadorMensajesSalida mms){
        this.mms = mms;
    }

    public void setInterfazRecibe(InterfazRecibe interfazRecibe){
        this.interfazRecibe = interfazRecibe;
    }

    public void recibe(MsjAckUnion msjAckUnion){
        this.usrID=msjAckUnion.getId();
        mms.setId(usrID);
        mup.recibeUnidoPartida(msjAckUnion.getRespuesta());
        System.out.println("Jugador Registrado");
    }

    public void recibe(MsjAckCrear msjAckCrear){
        mcp.recibePartidaCreada(msjAckCrear.getRespuesta());
        interfazRecibe.cerrarConexion();
        System.out.println("Partida Creada");
    }

    public void recibe(MsjFinPartida mensajeFinPartida){
        System.out.println("recibi un fin de partida");
        mpj.ocultarPantallaJuego();
        if(mensajeFinPartida.getId()==-1){
            new PantallaFinPartida("Ganaste!!");
            System.out.println("ganaste");
        }else {
            System.out.println("perdiste.");
            new PantallaFinPartida("Perdiste!!");
        }
        
        //System.out.println("Partida Finalizada por Servidor");
        //System.exit(0);
    }

    public void recibe(MsjInicioPartida mensajeInicioPartida){
        System.out.println("Iniciando Partida...");
        mup.ocultarPantallaUnido();
        mpj = new ManejadorPantallaJuego( usrID, mensajeInicioPartida.getTipoEscenario(), mensajeInicioPartida.getCantJugadores(), mensajeInicioPartida.getJugadores(), mms);
    }

    public void recibe(MsjGrafico msjGrafico){
        mpj.redibujarPantalla(msjGrafico.getJugadores(), msjGrafico.getBalas());
    }

    void setManejadorCrearPartida(ManejadorCrearPartida mcp) {
        this.mcp = mcp;
    }

    void setManejadorUnirsePartida(ManejadorUnirsePartida mup) {
        this.mup = mup;
    }
/******************************************************************/
}